深入解读 DoIP 协议

#Technomous #DoIP

协议简介

协议功能:

协议优势:

网络架构

Pasted image 20230418151154.png|650

车辆网络分为车内网(Vehicle network)和车外网(External network),车内网和车外网之间,有两组重要的线束,其中一组是用于数据传输的以太网线,另一组是用于诊断功能激活的激活线。以太网线就是常见的四线制 TX 标准网线。而激活线的设计,是用于车内诊断功能激活。出于能耗和电磁干扰的考虑,要求非诊断通信期间,与诊断相关的功能处于关闭状态,这样一方面可以降低能耗,另一方面减少对网络带宽的消耗,从而降低电磁干扰。

交互流程

Pasted image 20230425133735.png|650

交互流程涉及到 Actor、Client DoIP entity、Server DoIP entity 和 Vehicle non DoIP ECU 四个角色,它们之间的交互涉及到以下流程:

协议要求

报文格式

Pasted image 20230418151906.png|600

协议版本号

版本号 含义
0x00 预留
0x01 DoIP ISO/IDS 13400-2:2010
0x02 DoIP ISO 13400-2:2012
0x03 DoIP ISO 13400-2:2019
0x04...0xFE 预留
0xFF 车辆识别请求报文默认值

版本号取反

对协议版本进行校验,确保正确的 DoIP 格式。如:协议版本 0x03,则此值为 0xFC。

负载类型

负载类型包含:节点管理类、诊断类、节点状态类和预留。

负载分类 负载类型值
节点管理类 0x0000-0x0008
诊断类 0x8001-0x8003
节点状态类 0x4001-0x4004
预留 其他

节点管理类报文

负载类型值 负载类型名称 支持情况 协议
0x0000 DoIP 首部否定响应 强制 UDP/TCP
0x0001 车辆识别请求报文 强制 UDP
0x0002 带 EID 的车辆识别请求报文 可选 UDP
0x0003 带 VIN 的车辆识别请求报文 强制 UDP
0x0004 车辆声明报文/车辆识别响应报文 强制 UDP
0x0005 路由激活请求报文 强制 TCP
0x0006 路由激活响应报文 强制 TCP
0x0007 在线检查请求报文 强制 TCP
0x0008 在线检查响应报文 强制 TCP

诊断类报文

负载类型值 负载类型名称 支持情况 协议
0x8001 诊断报文 强制 TCP
0x8002 诊断报文肯定应答 强制 TCP
0x8003 诊断报文否定应答 强制 TCP

节点状态类

负载类型值 负载类型名称 支持情况 协议
0x4001 DoIP 实体状态请求报文 可选 UDP
0x4002 DoIP 实体状态响应报文 可选 UDP
0x4003 诊断电源模式请求报文 强制 UDP
0x4004 诊断电源模式响应报文 强制 UDP

负载长度

DoIP 的数据部分长度。

模块功能

Socket Adapter

SoAd 层作为协议适配层,主要实现以下功能:

DoIP Server

Server 端作为协议响应端,主要实现以下功能:

DoIP Client

Client 作为协议请求端,主要实现以下功能:

DoIP Gateway

Gateway 的功能需要从两个方面去分析:

Pasted image 20230421150529.png|500

在传统的总线系统下,对 ECU 的寻址是通过逻辑 DoIP 地址,此时 Gateway 需要保存地址映射表并转发 UDS 报文。

由于以太网的高带宽,需要支持 ECU 的并行刷新。

Pasted image 20230421152337.png|500

目前 ISO 13400 并没有明确指定但是目前有两种实现模式:

  1. Transparent switch
    诊断仪直接连接到车内的以太网 ECUs进行通信。

  2. Locked switch(e.g. via VLAN encapsulation)
    这种场景下诊断仪是没有权限直接连接到车内的以太网 ECUs,诊断仪的通信需要通过中央网关模拟诊断仪进行中间转发。此时的转发也可以根据实际需求对相应的流程进行精简,不同的策略转发效率也各不相同。

![[Fast_Vehicle_Diagnostics_with_DoIP.pdf]]